package memento;

import logica.Entidad;
import logica.IdExternoInexistenteException;

import vista.objetos.EntidadGraficable;
import vista.objetos.EstrategiaEntidadGraficable;

public class MementoEntidadGraficable extends MementoGraficableConAtributo {
	
	private EstrategiaEntidadGraficable tipo;
	private IMemento entidad;
	
	public MementoEntidadGraficable(EntidadGraficable entidadGraficable)
	{
		super(entidadGraficable, entidadGraficable.getPunto());
		
		this.tipo = entidadGraficable.getTipoEntidad();
		this.entidad = ((Entidad)entidadGraficable.getObjetoDiagramaDecorado()).getMementoGenerico();
	}

	@Override
	protected void cargarGraficable()
	{
		super.cargarGraficable();
		
		EntidadGraficable entidadGraficable = (EntidadGraficable) super.getGuardable();
		entidadGraficable.setTipoEntidad(tipo);
				
		super.cargarAtributos(); // termina de cargar los identificadores y atributos y verifica consistencia
		
		try {
			entidadGraficable.crearIdentificadores();
		} catch (IdExternoInexistenteException e) {
			System.err.print("Error al crear los identificadores");
		}
	}
	
	@Override
	void cargarLogico() {
		this.entidad.cargarMemento();
	}
}
